from .base import Object
from .style import Style

class ParagraphFormat(Object):
    @property
    def Style(self) -> Style:
        return Style(self.Instance.Style)

    @property
    def AddSpaceBetweenFarEastAndAlpha(self):
        return self.Instance.AddSpaceBetweenFarEastAndAlpha

    @property
    def AddSpaceBetweenFarEastAndDigit(self):
        return self.Instance.AddSpaceBetweenFarEastAndDigit

    @property
    def Alignment(self):
        return self.Instance.Alignment

    @property
    def Application(self):
        return self.Instance.Application

    @property
    def AutoAdjustRightIndent(self):
        self.Instance.AutoAdjustRightIndent

    @property
    def BaseLineAlignment(self):
        self.Instance.BaseLineAlignment

    @property
    def Borders(self):
        return self.Instance.Borders

    @property
    def CharacterUnitFirstLineIndent(self):
        return self.Instance.CharacterUnitFirstLineIndent

    @property
    def CharacterUnitLeftIndent(self):
        return self.Instance.CharacterUnitLeftIndent

    @property
    def CharacterUnitRightIndent(self):
        return self.Instance.CharacterUnitRightIndent

    @property
    def CollapsedByDefault(self):
        return self.Instance.CollapsedByDefault

    @property
    def Creator(self):
        return self.Instance.Creator

    @property
    def DisableLineHeightGrid(self):
        return self.Instance.DisableLineHeightGrid

    @property
    def Duplicate(self):
        return self.Instance.Duplicate

    @property
    def FarEastLineBreakControl(self):
        return self.Instance.FarEastLineBreakControl

    @property
    def FirstLineIndent(self):
        return self.Instance.FirstLineIndent

    @property
    def HalfWidthPunctuationOnTopOfLine(self):
        return self.Instance.HalfWidthPunctuationOnTopOfLine

    @property
    def HangingPunctuation(self):
        return self.Instance.HangingPunctuation

    @property
    def Hyphenation(self):
        return self.Instance.Hyphenation

    @property
    def KeepTogether(self):
        return self.Instance.KeepTogether

    @property
    def KeepWithNext(self):
        return self.Instance.KeepWithNext

    @property
    def LeftIndent(self):
        return self.Instance.LeftIndent

    @property
    def LineSpacing(self):
        return self.Instance.LineSpacing

    @property
    def LineSpacingRule(self):
        return self.Instance.LineSpacingRule

    @property
    def LineUnitAfter(self):
        return self.Instance.LineUnitAfter

    @property
    def LineUnitBefore(self):
        return self.Instance.LineUnitBefore

    @property
    def MirrorIndents(self):
        return self.Instance.MirrorIndents

    @property
    def NoLineNumber(self):
        return self.Instance.NoLineNumber

    @property
    def OutlineLevel(self):
        return self.Instance.OutlineLevel

    @property
    def PageBreakBefore(self):
        return self.Instance.PageBreakBefore

    @property
    def Parent(self):
        return self.Instance.Parent

    @property
    def ReadingOrder(self):
        return self.Instance.ReadingOrder

    @property
    def RightIndent(self):
        return self.Instance.RightIndent

    @property
    def Shading(self):
        return self.Instance.Shading

    @property
    def SpaceAfter(self):
        return self.Instance.SpaceAfter

    @property
    def SpaceAfterAuto(self):
        return self.Instance.SpaceAfterAuto

    @property
    def SpaceBefore(self):
        return self.Instance.SpaceBefore

    @property
    def SpaceBeforeAuto(self):
        return self.Instance.SpaceBeforeAuto

    @property
    def Style(self):
        return self.Instance.Style

    @property
    def TabStops(self):
        return self.Instance.TabStops

    @property
    def TextboxTightWrap(self):
        return self.Instance.TextboxTightWrap

    @property
    def WidowControl(self):
        return self.Instance.WidowControl

    @property
    def WordWrap(self):
        return self.Instance.WordWrap

    def CloseUp(self):
        self.Instance.CloseUp()

    def IndentCharWidth(self, Count: int):
        self.Instance.IndentCharWidth(Count)

    def IndentFirstLineCharWidth(self, Count: int):
        self.Instance.IndentFirstLineCharWidth(Count)

    def OpenOrCloseUp(self):
        self.Instance.OpenOrCloseUp()

    def OpenUp(self):
        self.Instance.OpenUp()

    def Reset(self):
        self.Instance.Reset()

    def Space1(self):
        """ Selection.ParagraphFormat.LineSpacingRule = wdLineSpaceSingle """
        self.Instance.Space1()

    def Space15(self):
        self.Instance.Space15()

    def Space2(self):
        self.Instance.Space2()

    def TabHangingIndent(self, Count:int):
        self.Instance.TabHangingIndent(Count)

    def TabIndent(self, Count:int):
        self.Instance.TabIndent(Count)

    def saveobj(self):
        return {
            'Class': 'ParagraphFormat'
        }
